# 假设 Andy 和 Doris 想在晚餐时选择一家餐厅，并且他们都有一个表示最喜爱餐厅的列表，每个餐厅的名字用字符串表示。
#
#  !!!你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅！！！！！！！！。 如果答案不止一个，则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。


from typing import List


class Solution:
    def findRestaurant(self, list1: List[str], list2: List[str]) -> List[str]:
        list1_mark = {one: i for i, one in enumerate(list1)}
        ans = []
        min_ans = 2000
        list2_mark = {}
        for i, one in enumerate(list2):
            if one in list1_mark:
                list2_mark[one] = i + list1_mark[one]
                min_ans = min(min_ans, i + list1_mark[one])
        for key in list2_mark.keys():
            if list2_mark[key] == min_ans:
                ans.append(key)
        return ans
